Skip to content

feat(api): tren-e — TENANT-001 T3: tenant-scope /api/plan + /api/terminal yüzeylerinde - #95

Closed
AlbSar wants to merge 6 commits into
mainfrom
train-2026-08-07-e
Closed

feat(api): tren-e — TENANT-001 T3: tenant-scope /api/plan + /api/terminal yüzeylerinde#95
AlbSar wants to merge 6 commits into
mainfrom
train-2026-08-07-e

Conversation

@AlbSar

@AlbSar AlbSar commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Ne yapıldı (düz Türkçe)

Kiracı (tenant) sınırının kalan iki merkezi API girişi kapatıldı:

  • /api/plan — plan/koşu başlatma girişi
  • /api/terminal/* — kabuk (shell) erişimi taşıdığı için sınırın en duyarlı yüzeyi

İkisi de daha önce çağıranın tenant iddiası yokken sessizce 'local' kiracısına düşüyordu.
Artık T2'de kurulan ortak resolveApiCallerTenant kararına bağlılar:

  • strict_tenant_isolation AÇIK → tenant iddiası olmayan çağıran 403 alır (fail-closed)
  • KAPALI → v1 davranışı bayt-değişmez ('local')

Doğrulama notu (ölü-kod kontrolü)

Patch'lenen ilk site 410 ile emekli /api/start değil, canlı /api/plan ucudur — kontrol
edildi, ölü koda kablo çekilmedi.

Kanıt

  • 2 yeni resolver-kontrat pini: strict-AÇIK reddi, strict-KAPALI 'local', tenant'lı çağıran,
    config yok → permissive, bozuk config → fail-soft permissive (sessiz sertleşme yok)
  • tests/api/ sınıfı: 105 dosya / 1027 test yeşil
  • npx tsc --noEmit temiz · npm run lint:gates tam zincir yeşil

Makbuz zinciri

  • GR-2026-08-07-TENANT-T3-01 — admission → consumed
  • GR-2026-08-07-T3-SUPP-01 — mekanik baseline + rozet tazeleme → consumed

MASTER-PLAN satır 4020 (TENANT-001) T3 settlement'ı ile güncellendi; kalan kapsam CLI+MCP
yüzeyleri ve tam IDOR matrisi (T4).

🤖 Generated with Claude Code

AlbSar and others added 6 commits August 7, 2026 13:57
…enant-scope

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…inal yüzeylerinde

Kalan iki merkezi NULL-tenant sitesi kapatıldı: /api/plan ingress'i ve
/api/terminal/* (kabuk erişimi taşıdığı için tenant sınırının en duyarlı
yüzeyi). İkisi de T2'nin resolveApiCallerTenant kararına bağlandı — strict
AÇIK: tenant-claim'siz çağıran 403; strict KAPALI: v1 bayt-değişmez.
Doğrulama notu: patch'lenen ilk site 410 ile emekli /api/start DEĞİL, canlı
/api/plan uçudur (kontrol edildi — ölü koda kablo çekilmedi).
Kanıt: 2 yeni resolver-kontrat pini (strict/permissive/tenant'lı + bozuk-config
fail-soft), api sınıfı yeşil, tsc temiz.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…consumed

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…otalarıyla sınırlı

T4 ön-kontrolü iki gerçeği ortaya çıkardı; ikisi de T3'ün ifadesini daraltıyor:

1. WS upgrade HTTP handler'ından geçmiyor. attachTerminalGateway server'a
   'upgrade' dinleyicisi olarak takılıyor, yani T3'te gated ettiğim
   /api/terminal/* HTTP rotasının dışında. Token-only auth'ta authTenant
   'local' kalıyor → HTTP'de 403 alan çağıran WS üzerinden kabuk alabilir.
2. Senkron readStrictTenantIsolation yalnız proje config'ini okuyor;
   loadConfig defaults→global→project zinciri kuruyor. Global katmanda
   strict açan operatörde T2/T3'ün bağladığı 6 site sessizce permissive.
   Bu, 'raporlar-ama-kapatmaz kontrol' sınıfının ÜÇÜNCÜ örneği.

Satır 4020 hâlâ VERIFY — hiçbir DONE iddiası şişirilmedi; yine de ifadeyi
main'e düzeltilmemiş sokmamak için kapsam cümlesi daraltıldı ve kalan iş
T4a/T4b/T4c olarak adlandırıldı.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@AlbSar

AlbSar commented Aug 7, 2026

Copy link
Copy Markdown
Contributor Author

Tren-f (#96) bu dalın tüm commit'lerini içeriyor ve üstüne TENANT-001 T4a'yı ekliyor. #95 ayrıca kırmızıydı: buraya atılan kapsam-düzeltmesi commit'i rozetleri güncellemeden gitti (Docs+Scripts stale), o da #96'da tazelendi. Devam #96'dan.

@AlbSar AlbSar closed this Aug 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant